﻿using System;

namespace Aufgaben;
/*
 * Jede Reise hat einen Grundpreis und einen Reisebeginn.
 * Es können für alle Reise-Arten die Anzahl der Tage bis zur Abreise bestimmt werden.
 * Jede Reise-Art berechnet den Preis auf unterschiedliche Art.
 * Die Reise wird in zwei Arten unterteilt. Die günstige Bronze-Reise und die teure Gold-Reise.
 * Die Bronze-Reise kostet Grundpreis * 1.25, die Gold-Reise kostet Grundpreis * 1.75
 */
public abstract class Reise
{
    private DateTime reisebeginn;
    protected double grundpreis;

    protected Func<Reise, double> stornoAlgorithmus;

    public int TageBestimmen()
    {
        return reisebeginn.Subtract(DateTime.Now).Days;
    }

    public void SetStornoAlgorithmus(Func<Reise, double> algorithmus)
    {
        stornoAlgorithmus = algorithmus;
    }

    public double BerechneStorno()
    {
        return stornoAlgorithmus.Invoke(this);
    }

    public abstract double PreisBerechnen();

    protected Reise(DateTime reisebeginn, double grundpreis)
    {
        this.reisebeginn = reisebeginn;
        this.grundpreis = grundpreis;
    }
    
    
}